package persistencia.clientes;

import java.util.ArrayList;
import java.util.List;

import modelo.Cliente;
import modelo.Direccion;
import modelo.Empresa;
import modelo.enums.Tarifa;
import modelo.enums.TipoVia;
import modelo.utils.ListaClientes;

public class BDClienteImpl implements BDCliente {

	private static final int CANTIDAD = 10;
	private List<Cliente> clientes;

	public BDClienteImpl() {
		super();
		initDB();
	}

	private void initDB() {
		clientes = new ArrayList<Cliente>();

		Direccion direccion = new Direccion(TipoVia.AVENIDA,
				"Calle de pruebas", "12005", "123", "8", "24");
		for (int i = 0; i < CANTIDAD; i++) {
			Empresa empresa = new Empresa("Nombre " + Integer.toString(i),
					Integer.toString(i), direccion, Tarifa.NORMAL);
			insert(empresa);
		}
	}

	@Override
	public ListaClientes getAll() {
		return new ListaClientes(clientes);
	}

	@Override
	public Cliente findByNIF(String nif) {
		for (Cliente cliente : clientes)
			if ((cliente.getNif()).equalsIgnoreCase(nif))
				return cliente;
		return CLIENTE_NULL;
	}

	@Override
	public boolean update(Cliente cliente) {
		Cliente enLista = findByNIF(cliente.getNif());
		if (enLista != null) {
			enLista.actualiza(cliente);
			return true;
		}
		return false;
	}

	@Override
	public boolean delete(String nif) {
		Cliente cliente = findByNIF(nif);
		if (cliente == CLIENTE_NULL)
			return false;
		else
			clientes.remove(cliente);
		return true;
	}

	@Override
	public void insert(Cliente cliente) {
		clientes.add(cliente);
	}

}
